package com.example.design.factory;

public interface OauthService {

    /**
     * 获取授权平台
     *
     * @return ThirdPlatformEnum
     */
    ThirdPlatformEnum platform();

    /**
     * 获取应用 key
     *
     * @return
     */
    String appKey();

    /**
     * 获取oauth授权登录地址
     * <p>
     * 用于前端跳转
     */
    String login(Long shopId);

    /**
     * 获取并保存访问令牌
     */
    void callback(String state, String code);

    /**
     * 获取并保存访问令牌(新版店铺授权)
     */
    void callbackV2(String state, String code);

    /**
     * 更新访问令牌
     *
     * @param record record
     */
    void refresh(CommonOauthTokenDO record);

    /**
     * 更新访问令牌(新)
     *
     * @param record record
     */
    void refreshV2(AccessShopDO record);

    /**
     * 获取api访问令牌
     *
     * @return accessToken
     */
    String getAccessToken(String appKey);
}
